import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
	// 这个代表全局可以访问数据对象，就像是咱们在组件中声明的 data 属性
	state:{
		userLoginInfo:{
			loginState: false,
			getDataToken: '',
			userInfo: {
				nicekName: '未知用户名',
				avatar: '/static/faces/unknow.jpg'
			}
		},
		shopCart: uni.getStorageSync("shopCart") ? JSON.parse(uni.getStorageSync("shopCart")) : []
	},
	// 这个实时监听 state 内的数据对象变化，类似 咱们组件中的 computed 属性，会依赖 state 数据变化而变化
	getters:{
		shopCartNum(state){
			let num = 0
			state.shopCart.map(item =>{
				num += item.num
			})
			return num
		}
	},
	// 用来同步设置 state 的值
	mutations:{
		userLogin(state, userInfo){
			state.userLoginInfo = userInfo
		},
		addCart(state, oneShop){
			state.shopCart.push(oneShop)
			uni.setStorageSync('shopCart', JSON.stringify(state.shopCart))
		},
	},
	// 通过提交 mutations 内部的方法，异步更新 state 的状态，官方推荐都使用这种方法比较合适
	actions:{
		userLoginAction(context, userInfo){
			context.commit('userLogin', userInfo)
		},
		addCartAction(context, oneShop){
			context.commit('addCart', oneShop)
		}
	}
})
export default store